iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Software Development

都是 P 開頭的程式語言,你是在 py 啥啦系列 第 8

[08] [Flask 快速上手筆記] 07. 重新導向x狀態碼xJSON

  • 分享至 

  • xImage
  •  

重新導向和狀態碼

使用 redirect() 函數可以重新導向到指定網址

abort() 可以直接中斷請求,並返回 status code

from flask import abort, redirect, url_for

@app.route('/')
def index():
    return redirect(url_for('login'))

@app.route('/login')
def login():
    abort(401)
    this_is_never_executed()

如果想在 404 的時候顯示 error.html 畫面

@app.errorhandler(404)
def not_found(error):
    return render_template('error.html'), 404

還可以使用 make_response() 把回傳表達式包起來,獲得回傳的物件後進行修改再回傳

@app.errorhandler(404)
def not_found(error):
    resp = make_response(render_template('error.html'), 404)
    resp.headers['X-Something'] = 'A value'
    return resp

JSON 格式

在前後端分離的情境下,用 JSON 作為 API 回傳格式是很常見的作法
如果回傳一個dict到 view 裡面,就會被轉換成一個 JSON 的回傳格式

@app.route("/me")
def me_api():
    user = get_current_user()
    return {
        "username": user.username,
        "theme": user.theme,
        "image": url_for("user_image", filename=user.image),
    }

如果單純回傳dict不足以滿足需求,還想創建其他類型的 JSON 格式回傳
可以使用 jsonify() 函數,當然也可以到套件包裡找找有沒有適合的

@app.route("/users")
def users_api():
    users = get_all_users()
    return jsonify([user.to_json() for user in users])

上一篇
[07] [Flask 快速上手筆記] 06. Cookie and Session
下一篇
[09] [Flask 快速上手筆記] 08. 提示訊息與 Log 紀錄
系列文
都是 P 開頭的程式語言,你是在 py 啥啦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言